# coding: utf-8
from sqlalchemy import Column, DateTime, MetaData, String, Table, text
from sqlalchemy.dialects.mysql import INTEGER

metadata = MetaData()


t_b_loginrecord = Table(
    'b_loginrecord', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('logindt', DateTime, comment='登录日期;登录日期'),
    Column('logintime', DateTime, comment='登录时间;登录时间'),
    Column('lastlivetime', DateTime, comment='最后心跳时间;每分钟心跳一次，最后一次心跳的时间，也代表本次session退出时间'),
    Column('souceip', String(100), comment='登录源ip;登录的源ip地址'),
    Column('workno', String(50), comment='登录员工工号;员工工号'),
    Column('username', String(50), comment='员工姓名;员工姓名，冗余信息方便查询'),
    comment='操作员登录记录表'
)


t_b_oprecord = Table(
    'b_oprecord', metadata,
    Column('ID', INTEGER(32), primary_key=True),
    Column('opcode', String(50), comment='操作编码;操作编码'),
    Column('workno', String(50), comment='员工编码;操作员工号'),
    Column('optime', DateTime, comment='操作时间;操作时间'),
    Column('souceip', String(50), comment='源ip地址;源ip'),
    comment='操作记录表'
)


t_codegen = Table(
    'codegen', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('tname', String(50), comment='表名称;使用该方案的表名称，与usedate的组合不能重复'),
    Column('prechar', String(32), comment='字符前缀;字符前缀'),
    Column('datepart', String(8), server_default=text("'0'"), comment='日期部分;8位长度的日期部分，留空不使用，与tname一起判定编码方案'),
    Column('seriallen', INTEGER(32), comment='当前顺序码;当前顺序码的最大值'),
    Column('bitlen', INTEGER(32), comment='顺序码长度;顺序码长度'),
    comment='编码生成表'
)


t_codepool = Table(
    'codepool', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='主键;自增长主键'),
    Column('tablename', String(50), comment='目标表名称;使用编码的表名，不能重复'),
    Column('datepart', String(8), comment='编码日期部分;与tablename字段一起决定编码方案'),
    Column('code', String(50), comment='待用编码;待用编码'),
    comment='编码池'
)


t_creport = Table(
    'creport', metadata,
    Column('ID', INTEGER(11), primary_key=True, comment='ID'),
    Column('repcode', String(50), comment='报表编码;报表编码'),
    Column('repname', String(100), comment='报表名称;报表名称'),
    Column('searchcode', String(50), comment='查询编码;查询编码'),
    Column('usercode', String(32), comment='操作员编号;操作员编号,报表的拥有者'),
    Column('opentype', String(2), comment='开放类型;开放类型00：私有的01：公共的'),
    comment='自定义报表主表'
)


t_datasources = Table(
    'datasources', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('dscode', String(50), comment='数据源编码;数据源编码'),
    Column('dsname', String(100), comment='数据源名称;数据源名称'),
    Column('dsowner', String(50), comment='数据源拥有者编码;数据源的拥有者'),
    Column('opentype', String(10), server_default=text("'0'"), comment='开放级别;数据源开放级别'),
    Column('dstype', String(10), server_default=text("'0'"), comment='数据源类别;数据源类别'),
    comment='数据源表'
)


t_dbtables = Table(
    'dbtables', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('tblcode', String(32), comment='数据表编号'),
    Column('ename', String(32), comment='英文名称'),
    Column('cname', String(32), comment='中文名称'),
    Column('comment', String(32), comment='数据表描述'),
    comment='数据表清单'
)


t_joinconditions = Table(
    'joinconditions', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('jccode', String(50), comment='连接条件编码'),
    Column('ltblcode', String(50), comment='左表编码;连接左表编码'),
    Column('lcolcode', String(50), comment='左表字段编码;左表连接字段的编码'),
    Column('rtblcode', String(50), comment='右表编码;连接右表编码'),
    Column('rcolcode', String(50), comment='右表字段编码;连接右表字段编码'),
    Column('dscode', String(50), comment='数据源编码;数据源编码'),
    comment='连接条件清单'
)


t_mastnetcomlog = Table(
    'mastnetcomlog', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('precode', String(10), comment='前导符;日志的前导符'),
    Column('createtime', DateTime, comment='日志生成时间;日志生成的时间'),
    Column('hostname', String(100), comment='主机名称;生成日志的主机名称'),
    Column('company', String(32), comment='设备厂家;产生此日志的设备厂家'),
    Column('logversion', String(10), comment='日志版本;日志的版本'),
    Column('modulename', String(100), comment='模块名称;产生此日志的模块名称'),
    Column('serverity', String(20), comment='日志级别;日志的级别'),
    Column('brief', String(100), comment='摘要;摘要信息'),
    Column('infotype', String(10), comment='信息类别;信息类别i信息s安全d诊断'),
    Column('serialno', INTEGER(11), comment='流水号;流水号'),
    Column('description', String(300), comment='日志信息的具体内容;日志信息的具体内容'),
    Column('recordtime', DateTime, comment='登记时间;记录该日志的时间'),
    comment='网络设备日志主表'
)


t_netanalysisrule = Table(
    'netanalysisrule', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('mainre', String(300), comment='主识别正则;主要的识别正则，用于区别不同厂商设备'),
    Column('devicename', String(200), comment='设备名称;设备名称'),
    Column('precode_re', String(300), comment='前导符正则;前导符正则'),
    Column('precode_sofs', INTEGER(32), server_default=text("0"), comment='前导符起始取值偏移量;前导符起始取值偏移量'),
    Column('precode_sefs', INTEGER(32), server_default=text("0"), comment='前导符终止取值偏移量;前导符终止取值偏移量'),
    Column('createtime_re', String(300), comment='日志创建时间正则;日志创建时间正则'),
    Column('createtime_sofs', INTEGER(32), server_default=text("0"), comment='日志创建时间起始取值偏移量;日志创建时间起始取值偏移量'),
    Column('createtime_eofs', INTEGER(32), server_default=text("0"), comment='日志创建时间终止取值偏移量;日志创建时间终止取值偏移量'),
    Column('hostname_re', String(300), comment='主机名正则;主机名正则'),
    Column('hostname_sofs', INTEGER(32), server_default=text("0"), comment='主机名起始取值偏移量;主机名起始取值偏移量'),
    Column('hostname_eofs', INTEGER(32), server_default=text("0"), comment='主机名终止取值偏移量;主机名终止取值偏移量'),
    Column('logversion_re', String(300), comment='日志版本正则;日志版本正则'),
    Column('logversion_sofs', INTEGER(32), server_default=text("0"), comment='日志版本起始取值偏移量;日志版本起始取值偏移量'),
    Column('logversion_eofs', INTEGER(32), server_default=text("0"), comment='日志版本终止取值偏移量;日志版本终止取值偏移量'),
    Column('moudulename_re', String(300), comment='模块名称正则;模块名称正则'),
    Column('moudulename_sofs', INTEGER(32), server_default=text("0"), comment='模块名称起始取值偏移量;模块名称起始取值偏移量'),
    Column('moudulename_eofs', INTEGER(32), server_default=text("0"), comment='模块名称终止取值偏移量;模块名称终止取值偏移量'),
    Column('serverity_re', String(300), comment='日志级别正则;日志级别正则'),
    Column('serverity_sofs', INTEGER(32), server_default=text("0"), comment='日志级别起始取值偏移量;日志级别起始取值偏移量'),
    Column('serverity_eofs', INTEGER(32), server_default=text("0"), comment='日志级别终止取值偏移量;日志级别终止取值偏移量'),
    Column('brief_re', String(300), comment='摘要正则;摘要正则'),
    Column('brief_sofs', INTEGER(32), server_default=text("0"), comment='摘要起始取值偏移量;摘要起始取值偏移量'),
    Column('brief_eofs', INTEGER(32), server_default=text("0"), comment='摘要终止取值偏移量;摘要终止取值偏移量'),
    Column('infotype_re', String(300), comment='信息类型正则;信息类型正则'),
    Column('infotype_sofs', INTEGER(32), server_default=text("0"), comment='信息类型起始取值偏移量;信息类型起始取值偏移量'),
    Column('infotype_eofs', INTEGER(32), server_default=text("0"), comment='信息类型终止取值偏移量;信息类型终止取值偏移量'),
    Column('serialno_re', String(300), comment='顺序码正则;顺序码正则'),
    Column('serialno_sofs', INTEGER(32), server_default=text("0"), comment='顺序码起始取值偏移量;顺序码起始取值偏移量'),
    Column('serialno_eofs', INTEGER(32), server_default=text("0"), comment='顺序码终止取值偏移量;顺序码终止取值偏移量'),
    Column('description_re', String(300), comment='详细信息正则;详细信息正则'),
    Column('description_sofs', INTEGER(32), server_default=text("0"), comment='详细信息起始取值偏移量;详细信息起始取值偏移量'),
    Column('description_eofs', INTEGER(32), server_default=text("0"), comment='详细信息终止取值偏移量;详细信息终止取值偏移量'),
    Column('status', String(32), server_default=text("'01'"), comment='启用状态;规则是否启用'),
    comment='设备解析规则表'
)


t_operate = Table(
    'operate', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('ocode', String(100), comment='操作编号;操作编码，主键'),
    Column('oname', String(200), comment='操作名称;操作名称'),
    Column('powercode', String(50), comment='隶属功能ID;隶属功能code'),
    Column('comment', String(200), comment='操作描述;操作描述'),
    comment='功能操作表'
)


t_postinfo = Table(
    'postinfo', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('code', String(50), comment='职务编码;职务编码'),
    Column('name', String(200), comment='职务名称;职务名称'),
    Column('ucount', INTEGER(32), server_default=text("1"), comment='编制数量;编制数量'),
    Column('prjcode', String(50), comment='所属项目编号;该职务所属项目编号'),
    comment='项目职务信息表'
)


t_powergroup = Table(
    'powergroup', metadata,
    Column('gcode', String(50), primary_key=True, comment='功能组编号;功能组编号，主键'),
    Column('gname', String(200), comment='功能组名称;功能组名称'),
    Column('comment', String(200), comment='功能组描述;功能组描述'),
    comment='功能组'
)


t_powers = Table(
    'powers', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('pcode', String(50), nullable=False, comment='功能编码;功能编码不可重复'),
    Column('pname', String(100), comment='功能名称;功能名称'),
    Column('powertype', String(10), comment='功能类别;功能类别00为层次功能无实际的页面01为叶子功能存在实际界面'),
    Column('parent', String(50), comment='上层功能;上层功能'),
    Column('powerowner', String(32), comment='系统功能所属;功能所属00：系统功能不能删改01:用户功能可以删改'),
    Column('ico', String(100), server_default=text("'icon-lable'"), comment='前端图标'),
    Column('level', INTEGER(32), comment='层级编码;层次编码'),
    Column('comname', String(100), comment='vue组件名称'),
    Column('URL', String(32), comment='资源定位地址;前端资源定位地址'),
    comment='系统功能表'
)


t_project = Table(
    'project', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;主键ID'),
    Column('pcode', String(50), nullable=False, comment='项目编号;项目编号'),
    Column('pnumber', String(50), comment='手工编码;项目手工编码'),
    Column('pname', String(100), nullable=False, comment='项目名称;项目名称'),
    Column('pcomment', String(200), comment='项目描述;项目描述'),
    Column('status', String(32), server_default=text("'01'"), comment='项目状态;项目状态00：停用01在用'),
    comment='部门信息'
)


t_querys = Table(
    'querys', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('qcode', String(50), comment='查询编码;查询编码，用于唯一识别查询'),
    Column('qname', String(100), comment='查询名称;查询名称'),
    Column('opentype', String(10), server_default=text("'0'"), comment='开放级别;查询的开放类型，私有的还是公有的'),
    Column('ownercode', String(50), comment='所属操作员编码;查询所属操作员编码'),
    Column('pcode', String(50), comment='父查询编码;父查询编码'),
    Column('dscode', String(32), comment='数据源编码;数据源编码'),
    comment='数据查询表'
)


t_qycolumns = Table(
    'qycolumns', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('fcode', String(50), comment='列编号;数据列编码'),
    Column('uititle', String(200), comment='UI列标题;UI中的标题'),
    Column('uilen', INTEGER(32), comment='UI列长度;UI数据表中的长度'),
    Column('qycode', String(50), comment='隶属查询编号;所属查询的编码'),
    Column('ordernum', INTEGER(32), comment='同组顺序码;同一查询中的字段顺序码'),
    Column('isui', String(10), server_default=text("'0'"), comment='是否在ui中展现;是否在UI中展现00:展现01：不展现'),
    comment='查询数据列表'
)


t_qycondition = Table(
    'qycondition', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('cdcode', String(50), comment='查询条件编码;查询条件编码'),
    Column('fcode', String(50), comment='所属数据字段编码;所属字段编码'),
    Column('vallogic', String(10), server_default=text("'eq'"), comment='字段取值逻辑;字段取值逻辑'),
    Column('orderno', INTEGER(32), comment='条件顺序码;相同数据源下的条件顺序码'),
    Column('prefixrs', String(10), server_default=text("'and'"), comment='与上个条件的关系;与上一个条件的关系，or，and'),
    Column('dscode', String(50), comment='所属数据源编码;所属数据源编码'),
    comment='查询条件表'
)


t_role = Table(
    'role', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('rcode', String(50), nullable=False, comment='角色编码;角色编码，唯一索引'),
    Column('rname', String(100), comment='角色名称;角色名称'),
    Column('comment', String(200), comment='角色描述;角色描述'),
    comment='系统角色信息表'
)


t_rs_dstbl = Table(
    'rs_dstbl', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('dscode', String(50), comment='数据源编码;数据源编码'),
    Column('tblcode', String(50), comment='数据表编码;数据表编码'),
    comment='数据源成员表'
)


t_rs_powergroup = Table(
    'rs_powergroup', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID'),
    Column('pcode', INTEGER(32), comment='功能编码'),
    Column('pgcode', INTEGER(32), comment='功能组编码'),
    comment='功能分组关系'
)


t_rs_prjpostrecord = Table(
    'rs_prjpostrecord', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('pcode', String(50), comment='项目编号;项目编号'),
    Column('postcode', String(50), comment='职务编号;职务编号'),
    Column('ucode', String(50), comment='任职员工编号;任职员工编号'),
    Column('startdate', DateTime, comment='起任时间;起任时间'),
    Column('enddate', DateTime, comment='结束时间;任命结束时间'),
    Column('status', String(32), server_default=text("'00'"), comment='在任状态;在任状态00离任01在任'),
    comment='rs_prjpostionappoint'
)


t_rs_roleoperate = Table(
    'rs_roleoperate', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='主键'),
    Column('rcode', String(20), nullable=False, comment='角色编码;角色编码'),
    Column('ocode', String(50), nullable=False, comment='操作编码;操作编码'),
    Column('authorize', String(32), nullable=False, comment='授权;授权00拥有权限01没有权限'),
    comment='角色操作表'
)


t_rs_roleuser = Table(
    'rs_roleuser', metadata,
    Column('ID', INTEGER(32), primary_key=True),
    Column('rcode', String(50), nullable=False, comment='角色编码;角色编码'),
    Column('usercode', String(50), nullable=False, comment='工号;员工编码'),
    comment='角色操作员表'
)


t_syspower = Table(
    'syspower', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;主键'),
    Column('powerno', String(100), comment='功能编号;主键功能编号'),
    Column('powername', String(200), comment='功能名称;功能名称'),
    Column('powertype', String(10), comment='功能类别;功能类别00:层级功能01：叶子功能'),
    Column('powerowner', String(32), comment='功能所属;功能所属00:系统级不能删改01:用户级'),
    Column('parent', INTEGER(32), comment='父级功能;父功能id'),
    Column('level', INTEGER(32), comment='层级编码;功能层级层级由大到小'),
    Column('comment', String(200), comment='描述;描述'),
    comment='系统功能表'
)


t_tablecolumns = Table(
    'tablecolumns', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;自增长主键'),
    Column('fcode', String(32), comment='字段编码;字段编码'),
    Column('ename', String(32), comment='字段英文名称;字段的英文名称'),
    Column('cname', String(32), comment='字段中文名称;字段的中文名称'),
    Column('ftype', String(32), comment='字段类型;字段的数据类型'),
    Column('flength', INTEGER(11), server_default=text("120"), comment='字段长度;字段的取值长度'),
    Column('comment', String(32), comment='字段描述;字段的描述'),
    Column('tblcode', String(32), comment='所属数据表编码;字段所属数据表编码'),
    comment='字段列表'
)


t_userinfo = Table(
    'userinfo', metadata,
    Column('ID', INTEGER(32), primary_key=True, comment='ID;主键'),
    Column('usercode', String(50), comment='员工编码;唯一的员工编码'),
    Column('workno', String(50), comment='工号;工号'),
    Column('name', String(100), comment='姓名;姓名'),
    Column('activestatus', String(32), comment='激活状态;激活状态，00已经激活，01停用'),
    Column('password', String(200), comment='登录密码;登录密码'),
    Column('loginstatus', String(32), comment='登录状态;登录状态00未登录01已经登录'),
    Column('pcode', String(50), comment='隶属项目;隶属项目编码'),
    Column('remoteip', String(32), comment='登录机IP'),
    Column('rolecode', String(50), comment='操作员角色'),
    comment='操作员表'
)
